/*
 * To change this license header, choose License Headers in Project Properties.
 * To change this template file, choose Tools | Templates
 * and open the template in the editor.
 */
package sys.dao;

import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.ArrayList;
import java.util.List;
import sys.bean.CidadeBean;
import sys.bean.EmpresaBean;
import sys.bean.EstadoBean;
import sys.utils.ConexaoMySql;

/**
 *
 * @author Administrador
 */
public class EmpresaDao {

    public EmpresaBean consultaEmpresa() throws SQLException {

        Connection con = ConexaoMySql.getConection();

        String sql = "SELECT e.id_empresa, UPPER(c.nome) AS nome_cidade , UPPER(et.nome) AS nome_estado, et.uf, e.razao_social, e.nome_fantasia, e.endereco, \n"
                + "e.n_endereco, e.bairro, e.cep, e.fone, e.cnpj, e.ie \n"
                + "FROM empresa e \n"
                + "INNER JOIN cidade c ON (c.id = e.cidade_id) \n"
                + "INNER JOIN estado et ON (et.id = c.estado_id) \n";

        PreparedStatement stmt = con.prepareStatement(sql);
        ResultSet rs = stmt.executeQuery();

        EmpresaBean empresa = new EmpresaBean();
        CidadeBean cidade = new CidadeBean();
        EstadoBean estado = new EstadoBean();

        while (rs.next()) {

            empresa.setIdEmpresa(rs.getInt("id_empresa"));
            estado.setNome(rs.getString("nome_estado"));
            estado.setUf(rs.getString("uf"));
            cidade.setEstado(estado);
            cidade.setNome(rs.getString("nome_cidade"));
            
            empresa.setCidade(cidade);
            empresa.setRazaoSocial(rs.getString("razao_social"));
            empresa.setNomeFantasia(rs.getString("nome_fantasia"));
            empresa.setEndereco(rs.getString("endereco"));
            empresa.setnEndereco(rs.getString("n_endereco"));
            empresa.setBairro(rs.getString("bairro"));
            empresa.setCep(rs.getString("cep"));
            empresa.setFone(rs.getString("fone"));
            empresa.setCnpj(rs.getString("cnpj"));
            empresa.setIe(rs.getString("ie"));

        }
        
        stmt.close();
        con.close();

        return empresa;
    }

    public List<EmpresaBean> listaEmpresas(String desc) throws SQLException {
        List<EmpresaBean> listEmpresas = new ArrayList<>();
        Connection con = ConexaoMySql.getConection();

        String sql = "SELECT e.id_empresa, e.razao_social, e.fone \n"
                + "FROM empresa e \n"
                + "WHERE e.razao_social LIKE '%" + desc + "%'";

        PreparedStatement stmt = con.prepareStatement(sql);
        ResultSet rs = stmt.executeQuery();

        while (rs.next()) {
            EmpresaBean empresa = new EmpresaBean();

            empresa.setIdEmpresa(rs.getInt("id_empresa"));
            empresa.setRazaoSocial(rs.getString("razao_social"));
            empresa.setFone(rs.getString("fone"));

            listEmpresas.add(empresa);
        }

        stmt.close();
        con.close();

        return listEmpresas;
    }

    public void alterar(EmpresaBean empresa) throws SQLException {

        Connection con = ConexaoMySql.getConection();

        String sql = "UPDATE \n"
                + "empresa SET cidade_id=?, razao_social=?, nome_fantasia=?, endereco=?, n_endereco=?, \n"
                + "bairro=?, cep=?, fone=?, cnpj=?, ie=? \n"
                + "WHERE  id_empresa=?; ";

        PreparedStatement stmt = con.prepareStatement(sql);

        stmt.setInt(1, empresa.getCidade().getIdCidage());
        stmt.setString(2, empresa.getRazaoSocial());
        stmt.setString(3, empresa.getNomeFantasia());
        stmt.setString(4, empresa.getEndereco());
        stmt.setString(5, empresa.getnEndereco());
        stmt.setString(6, empresa.getBairro());
        stmt.setString(7, empresa.getCep());
        stmt.setString(8, empresa.getFone());
        stmt.setString(9, empresa.getCnpj());
        stmt.setString(10, empresa.getIe());
        stmt.setInt(11, empresa.getIdEmpresa());
        
        stmt.execute();
        con.close();
        stmt.close();

    }

    public void incluir(EmpresaBean empresa) throws SQLException {

        Connection con = ConexaoMySql.getConection();
        String sql = "INSERT INTO \n"
                + "empresa (cidade_id, razao_social, nome_fantasia, endereco, n_endereco, bairro, cep, fone, cnpj, ie) \n"
                + "VALUES \n"
                + "(?, ?, ?, ?, ?, ?, ?, ?, ?, ?);";
        PreparedStatement stmt = con.prepareStatement(sql);

        stmt.setInt(1, empresa.getCidade().getIdCidage());
        stmt.setString(2, empresa.getRazaoSocial());
        stmt.setString(3, empresa.getNomeFantasia());
        stmt.setString(4, empresa.getEndereco());
        stmt.setString(5, empresa.getnEndereco());
        stmt.setString(6, empresa.getBairro());
        stmt.setString(7, empresa.getCep());
        stmt.setString(8, empresa.getFone());
        stmt.setString(9, empresa.getCnpj());
        stmt.setString(10, empresa.getIe());

        stmt.execute();

        stmt.close();
        con.close();

    }

}
